package com.ada.spark.rddfile

import org.apache.spark.{SparkConf, SparkContext}

/**
  * 对象文件是将对象序列化后保存的文件，采用Java的序列化机制。可以通过objectFile[k,v](path) 函数接收一个路径，读取对象文件，返回对应的 RDD，也可以通过调用saveAsObjectFile() 实现对对象文件的输出。因为是序列化所以要指定类型。
  */
object ObjectFileTest {
    def main(args: Array[String]): Unit = {
        //初始化配置信息及SparkContext
        val sparkConf: SparkConf = new SparkConf().setAppName("ObjectFileTest").setMaster("local[*]")
        val sc = new SparkContext(sparkConf)

        val rdd = sc.parallelize(Array(1, 2, 3, 4))

        //保存到文件
        rdd.saveAsObjectFile("objectFile")

        //从文件中读取
        val objFile = sc.objectFile[Int]("objectFile")

        //打印结果
        println(objFile.collect().mkString(","))
        //1,2,3,4
    }
}
